Printers receive input data from a source such as a computer and produce printed output based upon the input data. Usually, the input data is stored in some form, at least temporarily, in the printer prior to printing. The input data may be modified to form the stored data, or the stored data may be modified in the course of producing a printed output.
In a page printer, for example, stored data is used to produce a data bit representation of a page to be printed (during rasterization) and the bit data image of the page is then moved to a print mechanism for physical printing (during serialization). In an electrophotographic laser page printer, the serialized bit data modulates a laser beam swept across a photoconductor.
In the case of input text data, rasterization usually involves copying bit images of characters from character fonts into a bit map memory to produce the bit data representation of the desired page. Representations of the characters to be rasterized are held in a page buffer which is formatted in some fashion to facilitate rasterization.
In a page printer lacking sufficient memory for storing a bit map of an entire page to be printed, a swathing architecture is employed. In a swathing architecture, a page in the page buffer to be printed is rasterized into a series of contiguous raster line blocks referred to as swaths. Rasterization is accomplished iteratively, rasterizing a portion of the page into each swath as the swath is made available until the entire page has been completed.
The processes of formatting input data into the page buffer, rasterizing the page into the bit map memory, and printing the bit map onto paper must be accomplished with good performance and reliability. Most commonly these processes are carried out by a microprocessor in a page printer controller. In addition, many page printers use circuitry to provide hardware assistance to increase the effectiveness of the microprocessor. For example, serialization is handled almost entirely by hardware in many page printers, using direct memory access concepts and techniques. Further, rasterization may be assisted by electronic logic that allows the microprocessor to write data into the bit map memory as a set of bit fields that are variable in size and placement within the bit map. These bit fields are different from normal memory "words" in that the bit fields are dynamic in size and their placement is variable relative to a bit boundary, as opposed to the normal byte, word or double word boundary. Further, data from fonts may be combined with existing contents of the bit map (usually by means of a logical OR function) to produce overlay and other printing features.
If a full page bit map is available, input data may be formatted and fully rasterized into the bit map before initiating serialization and printing. In a swathing environment, the page data is stored in the page buffer, but rasterization must occur "on the fly", swath by swath during the printing process. This requires speed and efficiency of rasterization if acceptable printing speeds are to be maintained.
In the past, in swathing printers, page buffer data is stored in an ordered fashion so that the microprocessor is able to rasterize the bit map swaths by moving through the page buffer contents in an ordered sequence. The position of characters and the like relative to the page is maintained in a linked list, a form of index, that is accessed by the microprocessor to perform rasterization.
When rasterizing a character, the printer controller must determine the position on the page where the character is to be placed and if this position is within the swath of the page which is being rasterized. If the desired position is within the active swath, the controller must compute the physical address in memory for this position and transfer the font data for the character to the swath. If the character is not completely rasterized in the active swath, the controller must maintain an indication for that character so that in the next swath a further portion of the character is rasterized.
As can be appreciated, speed in storing input data and performing rasterization is essential to maintaining the throughput of a printer of the foregoing type. The throughput of the printer depends in part upon the rate of serialization of page bit map data to the print mechanism. In a swathing environment, rasterization must keep ahead of serialization to avoid a page complexity fault, so that the rate of serialization directly affects the required rate of rasterization. If a single controller resource, such as a microprocessor, is utilized not only for some or all of the rasterization process but also in accumulating data in a suitable format in the page buffer, the page buffer storage efficiency is also important.
It is the general aim of the present invention to provide an improved page buffer and rasterization arrangement in printers of the foregoing type.